#include "const.h"

void i_error__(const char *file, unsigned int line, const char *func,
const char *format, ...) {
	static char buf[8192];
	va_list args;
	int exitstatus;

	exitstatus = errno ? (int)errno : 1;

	va_start(args, format);
	vsnprintf(buf, sizeof(buf)-1, format, args);
	buf[sizeof(buf)-1] = 0;
	va_end(args);

	fprintf(stderr, "error: ");

	if (file)
		fprintf(stderr, "%s:", file);

	if (line)
		fprintf(stderr, "%u:", line);

	fprintf(stderr, " ");

	if (func)
		fprintf(stderr, "in %s: ", func);

	fprintf(stderr, "%s\n", buf);
	fflush(stderr);

	exit(exitstatus);
}
